import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author gao
 * @date 2025/9/14 14:10
 */

public class Solution {
    int m, j;
    List<Integer> path;
    List<List<Integer>> ret;

    public List<List<Integer>> combine(int n, int k) {
        // 初始化
        m = n;
        j = k;
        path = new ArrayList<>();
        ret = new ArrayList<>();

        dfs(1);
        return ret;
    }

    /**
     * 深度优先搜索
     * @param start 当前搜索的起始数字
     */
    private void dfs(int start) {
        // 如果当前路径长度等于j，将目前路径添加到结果集中
        if (path.size() == j) {
            ret.add(new ArrayList<>(path));
            return;
        }

        // 遍历所有可能的数字
        for (int i = start; i <= m; i++) {
            path.add(i);
            // 递归处理下一个元素
            dfs(i + 1);
            // 回溯
            path.remove(path.size() - 1);
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int n = in.nextInt();
            int k = in.nextInt();

            Solution solution = new Solution();
            System.out.println(solution.combine(n, k));
        }
    }
}